/**   
 * @Title: ProjectValidator.java 
 * @Package org.playgod1984.du.ddesign.validate 
 * @Description: TODO(用一句话描述该文件做什么) 
 * @author playgod playgod1984@163.com  
 * @date 2014年10月22日 下午1:22:35 
 * @version V1.0   
 */
package org.playgod1984.du.ddesign.validator;

import java.util.HashMap;
import java.util.Map;

import org.playgod1984.du.ddesign.model.Project;

import com.jfinal.core.Controller;
import com.jfinal.validate.Validator;

/** 
 * @ClassName: ProjectValidator 
 * @Description: TODO(这里用一句话描述这个类的作用) 
 * @author playgod playgod1984@163.com 
 * @date 2014年10月22日 下午1:22:35 
 *  
 */
@SuppressWarnings("all")
public class ProjectValidator extends Validator {

	/* (非 Javadoc) 
	 * <p>Title: validate</p> 
	 * <p>Description: </p> 
	 * @param c 
	 * @see com.jfinal.validate.Validator#validate(com.jfinal.core.Controller) 
	 */
	@Override
	protected void validate(Controller c) {
		if("E".equals(c.getPara("screen"))){
			if(validateSamename(c) == false){
				addError("msg", "相同的项目名称已经存在，请确认。");
			}
		}else{
			if(validateSamecode(c) == false){
				addError("msg", "相同的项目编号或名称已经存在，请确认。");
			}
		}
	}
	/**
	 * @Title: samepro
	 * @author:playgod playgod1984@163.com 
	 * @Description: Same Count 
	 * @param     设定文件 
	 * @return void    返回类型 
	 * @throws
	 */
	private boolean validateSamecode(Controller c){
		boolean result = false;
		if(Project.dao.findById(c.getPara("projectcode")) != null){
			result = false;// Exist same Count，validate=false
		}else if(Project.dao.findByName(c.getPara("projectname")) != null){
			result = false;// Exist same Count，validate=false
		}else{
			result = true;// Not Exist same Count,validate=true;
		}		
		return result;
	}
	/**
	 * @Title: samepro
	 * @author:playgod playgod1984@163.com 
	 * @Description: Same Count 
	 * @param     设定文件 
	 * @return void    返回类型 
	 * @throws
	 */
	private boolean validateSamename(Controller c){
		Map params = new HashMap();
		params.put("projectcode", c.getPara("projectcode"));
		params.put("projectname", c.getPara("projectname"));
		return Project.dao.findByNameWithDiffCode(params) == null;
	}
	/* (非 Javadoc) 
	 * <p>Title: handleError</p> 
	 * <p>Description: </p> 
	 * @param c 
	 * @see com.jfinal.validate.Validator#handleError(com.jfinal.core.Controller) 
	 */
	@Override
	protected void handleError(Controller c) {
		// addError方法把消息塞进了request.setAtrr
		c.renderJson(c.getRequest().getAttribute("msg"));
	}

}
